#include <../lib/igloo/igloo.h>
using namespace igloo;

#include <stdio.h>
#include <string>
using namespace std;

#include "../../Archivos/ArchivoDeEstructurasVariables.h"
#include "../../Entidades/Eleccion.h"
using namespace Archivos;
using namespace Entidades;
Context(TestEleccion)
{

	ArchivoDeEstructurasVariables* archivo;
	string path;

	void SetUp() {

		path = "TestEleccion.bin";
		archivo = new ArchivoDeEstructurasVariables(path);
		Eleccion* entidadInsertada = new Eleccion();
		entidadInsertada->setCargo("un cargo");
		entidadInsertada->agregarDistrito("un distrito");
		entidadInsertada->setFecha(20110808);
		archivo->insertar(entidadInsertada);
		delete entidadInsertada;
	}

	void TearDown() {

		remove(path.c_str());
		delete archivo;
	}

	Spec(TestLeer) {

		Eleccion* entidadLeida = new Eleccion();
		archivo->leer(entidadLeida, 0);

		Assert::That(entidadLeida->getCargo()->getNombre(), Is().EqualTo("un cargo"));
		Assert::That(entidadLeida->getDistritos()->at(0)->getNombre(), Is().Containing("un distrito"));
		Assert::That(entidadLeida->getFecha(), Is().EqualTo(20110808));
		delete entidadLeida;
	}

	Spec(TestBorrar) {

		Eleccion* entidadBorrada = new Eleccion();
		bool borradoExitoso = archivo->borrar(entidadBorrada, 0);
		delete entidadBorrada;

		Assert::That(borradoExitoso, Is().EqualTo(true));
	}

};

